
#include <iostream>
// 预处理器：主要完成文本替换 使用#号开头
#define DEBUG 1

// 宏变量、宏函数,约定大写
#define PI 3.14 //执行时进行文本替换，预处理会将PI替换成3.14

// 定义宏函数
// 宏函数是文本替换，本身就是函数实现，不会有函数调用开销
// 缺点：没有语法检查，多次调用同一宏函数，生成的代码增多了
#define TEST(i) printf("%d\n",i)

// 宏函数陷阱
#define  DIV(x, y) printf("%d\n",x/y)

int main15() {
    //#if 配合宏定义，可以选择要执行的代码
#if DEBUG
    printf("1\n");
#endif
    printf("end \n");

    TEST(10);
    // 我们期望是12/3=4
    // 宏函数仅仅是文本替换,结果为10不正确
    //printf("%d\n", 6 + 6 / 2 + 1);
    DIV(6 + 6, 2 + 1);
    return 0;
}

